package com.unknowpupil.design.sigleton;

import java.io.Serializable;

/**
 * @Description: <br/>
 * <p>
 *       单例饿汉式
 *       问题： 刚开始并没有人用到，立即加载就会浪费空间。最好式需要用到的时候在初始化就是延迟加载
 *       优点： 线程安全
 * </p>
 * @Author: <a> w10g </a>
 * @CreateDate: Create in 2020/4/24 16:23
 * @Classname: HungryType
 * @Version: 1.0
 */
public class HungrySingleton implements Serializable {
    /**
     * 2 提供静态属性
     * 初始化时候，立即加载
     *
     */
    private  static HungrySingleton instance = new HungrySingleton();
    /**
     * 1 私有构造，不让别人访问
     */
    private HungrySingleton() {
    }

    /**
     * 这方法不需要同步
     *      因为创建对象的时候类初始化就已经立刻加载了
     *      这是个天然的线程安全模式 调用效率高
     * @return
     */
    public static HungrySingleton getInstance(){
        return instance;
    }
    /**
     *    反序列化的时，直接调用方法返回对象。 这样就防止反序列化漏洞。
    */
    private Object readResolve() {
        return instance;
    }


}
